﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Osiptel.HECO.BE;
using Osiptel.HECO.DL;

namespace Osiptel.HECO.BL
{
    public class ComponenteBL : BaseBL
    {
        private ComponenteDL componenteDL = new ComponenteDL();

        public List<ComponenteBE> ObtenerComponentes(int idTipo, int idSubTipo, int idClase)
        {
            return componenteDL.ObtenerComponentes(idTipo, idSubTipo, idClase);
        }
        
        public int insertar(ComponenteBE componente, List<ComponenteTipoBE> lstTipos, List<ComponenteSubtipoBE> lstSubTipos)
        {
            int resultado = 0;
            ComponenteDL oComponenteDL = new ComponenteDL();
            ComponentePrecioBL oCompPrecioBL = new ComponentePrecioBL();            
            try
            {
                int idComp = oComponenteDL.mInsertar(componente);
                if (idComp > 0)
                {
                    for (int i = 0; i < lstTipos.Count; i++)
                    {
                        ComponenteTipoBE tipo = lstTipos[i];
                        tipo.IdComponente = idComp;
                        if (tipo.P05Tipo!=14){//si es de otros no se agrega
                            for (int j = 0; j < lstSubTipos.Count; j++)
                            {
                                ComponenteSubtipoBE subTipo = lstSubTipos[j];
                                subTipo.IdComponente = idComp;
                                oComponenteDL.mInsertarTipo(tipo);
                                if (subTipo.P06SubTipo > 0)
                                {
                                    oComponenteDL.mInsertarSubTipo(subTipo);
                                }
                            }
                        }
                    }
                }
                resultado = idComp;
                
                return resultado;
            }
            catch (Exception lexcError)
            {
                throw new Exception(lexcError.Message);
            }
            finally
            {
                oComponenteDL = null;
            }
        }
        
        public ComponenteBE Obtener(int idComponente)
        {
            return componenteDL.Obtener(idComponente);
        }
        public List<ComponenteBE> FListarComponentes(int pagina, int regxpagina)
        {
            return componenteDL.FListarComponentes(pagina, regxpagina);
        }

        public List<ComponenteBE> ObtenerCompRadioEnlace()
        {
            return componenteDL.ObtenerCompRadioEnlace();
        }

        public List<ComponenteBE> ObtenerTodosComponentes()
        {
            return componenteDL.ObtenerTodosComponentes();
        }

        public List<ComponenteBE> ObtenerComponentesPorIds(List<int> ids)
        {
            List<ComponenteBE> resultado = new List<ComponenteBE>();
            for (int i = 0; i < ids.Count; i++)
            {
                ComponenteBE rpta = Obtener(ids[i]);
                rpta.Orden = i;
                resultado.Add(rpta);
            }
            return resultado;
        }

        public List<ComponenteBE> ObtenerComponentesPorIds1(List<ParamPredeterminado> ids)
        {
            List<ComponenteBE> resultado = new List<ComponenteBE>();
            for (int i = 0; i < ids.Count; i++)
            {
                ComponenteBE rpta = Obtener(ids[i].Id);
                rpta.Orden = i;
                resultado.Add(rpta);
            }
            return resultado;
        }
    }
}
